home *** CD-ROM | disk | FTP | other *** search
/ Biodiversity of Illinois 2: Woodland Habitats / Biodiversity of Illinois 2 - Woodland Habitats.iso / mac / casts / PDFxtraBehaviors.cst / 00009_Script_PDF_GoToPage from field < prev    next >
Text File  |  2006-07-11  |  6KB  |  185 lines

  1. -- Go to Page
  2.  
  3. Property pEvent, pSprite, pMemberName, pAlertFlag
  4.  
  5. on doGo me
  6.   
  7.   -- get the page number from the text member
  8.   myMember = me.ExtractMemberFromString(pMemberName)[2]
  9.   pg = Integer(myMember.text)
  10.   
  11.   if (pg <1) then exit
  12.   set err = PDF_GotoPage(sprite pSprite, pg)
  13.   if PDF_status(sprite pSprite) then alert "PDF Behavior Error"&RETURN&PDF_error(sprite pSprite)
  14. end doGo
  15.  
  16. on mouseUp me
  17.   if (pEvent = #mouseUp) then doGo(me)
  18. end mouseUp
  19.  
  20. on mouseDown me
  21.   if (pEvent = #mouseDown) then doGo(me)
  22. end mouseDown
  23.  
  24. -- standard behavior stuff --
  25. on getPropertyDescriptionList me
  26.   set defaultValues = GetDefaultValues (me)
  27.   
  28.   set pdfSpriteList = getProp (defaultValues, #spriteList)
  29.   set defSprite     = getProp (defaultValues, #defaultSprite)
  30.   if (defSprite=0) then 
  31.     if the ticks - pAlertFlag > 10 then
  32.       alert "Please create a sprite of type PDF first."
  33.     end if
  34.     set pAlertFlag = the ticks -- The ticks when the user clicked "OK"
  35.     
  36.     exit
  37.   end if
  38.   
  39.   -- retrieve all members of type text, field or Flashcomponent
  40.   lTextFields = me.GetMembers([#text, #field, #flashcomponent])
  41.   if (lTextFields = []) then
  42.     if the currentSpriteNum then
  43.       alert "You need at least one member of type #field or #text to use this behavior."
  44.     end if
  45.     exit
  46.   end if 
  47.   
  48.   set p_list = [:]
  49.   addprop p_list, #pEvent, [ #comment: "Event", #format:#symbol, #range:[#mouseUp, #mouseDown], #default:#mouseUp]
  50.   addprop p_list, #pSprite, [ #comment: "PDF Sprite is in channel:", #format:#symbol, #range:pdfSpriteList, #default:defSprite]
  51.   if (lTextFields.count = 0) then
  52.     addprop p_list, #pMemberName, [ #comment: "Page number is in member:", #format: #string, #default:"<no named fields or text members available>"]
  53.   else  
  54.     addprop p_list, #pMemberName, [ #comment: "Page number is in member:", #format:#member, #default:lTextFields[1], #range:lTextFields]
  55.   end if   
  56.   return p_list
  57. end
  58.  
  59. on getBehaviorDescription
  60.   tmp = "Instruct PDF sprite to go to the page number specified in a Director field." 
  61.   tmp = tmp & RETURN& "Available for Windows only, Acrobat or Reader." 
  62.   tmp = tmp &RETURN&RETURN& "--- PARAMETERS ---" &RETURN& " - Event: mouseUp or mouseDown."
  63.   tmp = tmp &RETURN& " - PDF Sprite is in channel: which channel contains the PDF Sprite."
  64.   tmp = tmp &RETURN& " - Page number is in field: Director field member that contains the page number to display."
  65.   tmp = tmp &RETURN&RETURN&  "Free to use and abuse. (c)1999-2005, Integration New Media, Inc." &RETURN& "Thanks to James Newton for his suggestions" 
  66.   return tmp    
  67. end
  68.  
  69. on getBehaviorTooltip
  70.   return "Instruct PDF sprite to go to the page number" &RETURN& "specified in a Director field." & RETURN& "Available for Windows only, Acrobat or Reader." 
  71. end
  72.  
  73. -- utils --
  74. on GetDefaultValues me
  75.   if the currentSpriteNum then
  76.     set spriteList = GetSpriteList (me #PDF)
  77.     if count (spriteList) then
  78.       set defaultSprite = getAt (spriteList, 1)
  79.     else
  80.       set defaultSprite = 0
  81.     end if
  82.     
  83.     return [#spriteList: spriteList, #defaultSprite: defaultSprite]
  84.     
  85.   else -- the currentSpriteNum = 0
  86.     -- Director is merely recompiling this script: return dummy values
  87.     return [#spriteList: [1], #defaultSprite: 1]
  88.   end if
  89. end 
  90.  
  91.  
  92. on GetSpriteList me, memberType
  93.   -- return list of sprites of type memberType in current frame
  94.   global version
  95.   if (char 1 of version = 6) then
  96.     set maxSprite = 120
  97.   else
  98.     set maxSprite = the lastChannel
  99.   end if
  100.   
  101.   set aList=[]
  102.   
  103.   repeat with i = 1 to maxSprite
  104.     set spriteMember = the member of sprite i
  105.     -- if (string(m) contains "member 0") then next repeat -- unnecessary
  106.     if (the type of spriteMember = memberType) then -- (JN) Line break
  107.       append (aList, i)
  108.     end if
  109.   end repeat
  110.   
  111.   return aList
  112. end GetSpriteList
  113.  
  114.  
  115.  
  116. on GetMembers me, theMembersTypeNeeded  
  117.   
  118.   lResult = []
  119.   
  120.   lCastLib = the number of castLibs
  121.   
  122.   repeat while lCastLib -- repeat through all linked castlibs
  123.     
  124.     lMemberNum = the number of members of castLib(lCastLib)
  125.     
  126.     repeat while lMemberNum -- repeat through all members of the current castlib
  127.       lMemberType = member(lMemberNum, lCastLib).type
  128.       
  129.       if (theMembersTypeNeeded.getOne(lMemberType) > 0) then -- check if the member's type is contained in theMembersTypeNeeded
  130.         lName = member(lMemberNum, lCastLib).name 
  131.         if (lName <> "") then 
  132.           
  133.           lResult.AddAt(1, lName&&"(member"&&lMemberNum&&"of castlib"&&lCastLib&")") -- Add the member to the list
  134.         end if
  135.       end if
  136.       
  137.       set lMemberNum = lMemberNum - 1 -- check the next member
  138.     end repeat
  139.     
  140.     set lCastLib = lCastLib - 1 -- check the next castlib
  141.   end repeat
  142.   
  143.   return lResult
  144. end GetMembers
  145.  
  146. --
  147. -- Extract name and reference to a member contained in a string
  148. --    in a list [<name>, <(member xxx of castlib yyy)>]
  149. -- the String contains a reference to a member formatted like
  150. --    "<member name> (member xxx of castlib yyy)"
  151. --
  152. on ExtractMemberFromString me, theString
  153.   lResult = ["", VOID]
  154.   
  155.   if (StringP(theString)) then -- check if theString contains a string
  156.     lPos = offset("(member ", theString) -- find the offset of the substring "(member "
  157.     if (lPos > 0) then -- substring found = theString is a valid member reference
  158.       lName= ""
  159.       
  160.       if (lPos > 2) then
  161.         lName = theString.char[1..lPos-2]
  162.         if (lName) = "<no name>" then
  163.           lName = ""
  164.         end if
  165.       end if
  166.       
  167.       lMember = value(theString.char[lPos..theString.chars.count])
  168.       -- check if the member name and member reference are consistent
  169.       if (lMember <> VOID) then
  170.         if (lMember.name <> lName) then -- the user probably moved the cast member, we'll try to find it
  171.           if (lName <> "") then -- the member didn't have a name, so it's useless to look for it
  172.             lMember = member(lName)
  173.           else
  174.             lMember = VOID
  175.           end if
  176.         end if
  177.       end if
  178.       
  179.       lResult = [lName, lMember]
  180.     end if
  181.   end if
  182.   
  183.   return lResult
  184. end ExtractMemberFromString
  185.